// 给你一个只包含 '(' 和 ')' 的字符串，找出最长有效（格式正确且连续）括号子串的长度。

//  

// 示例 1：

// 输入：s = "(()"
// 输出：2
// 解释：最长有效括号子串是 "()"

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/longest-valid-parentheses
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<set>
#include<queue>
#include<stack>
using namespace std;

// 有bug无法判断((())),为多加

class Solution {
public:
    int longestValidParentheses(string s) {
        stack<int> sta1;
        stack<int> sta2;
        int res = 0;
        int imax=0;
        for(int i=0;i<s.size();i++){
            if(s[i]=='('){
                sta1.push(i);
            }
            if(s[i]==')'){
                if(sta1.empty()){
                    res = max(imax,res);
                    imax =0;
                }
                else{
                    int temp=sta1.top();
                    sta1.pop();
                    imax = imax+i-temp+1;
                    res=max(res,imax);
                }
            }
        }
        return res;

    }
};